const fs = require('fs');
const path = require('path');
const crypto = require('crypto');

// 计算文件哈希值
function getFileHash(filePath) {
  try {
    const content = fs.readFileSync(filePath);
    // 使用MD5计算哈希并取前8位
    const hash = crypto.createHash('md5').update(content).digest('hex').substring(0, 8);
    return hash;
  } catch (error) {
    console.error(`无法计算文件哈希 ${filePath}:`, error);
    return 'unknown';
  }
}

// 读取原始index.html文件
const originalIndex = fs.readFileSync(path.join(__dirname, 'dist/index.html'), 'utf8');

// 为文件添加哈希值
let optimizedIndex = originalIndex;

// 定义需要添加哈希的文件
const filesWithHashes = [
  { original: '/src/css/style.css', minified: '/src/css/style.min.css' },
  { original: '/src/css/install.css', minified: '/src/css/install.min.css' },
  { original: '/src/js/app.js', minified: '/src/js/app.min.js' },
  { original: '/src/js/install.js', minified: '/src/js/install.min.js' },
];

// 替换引用为带有哈希的压缩版本
filesWithHashes.forEach(file => {
  const filePath = path.join(__dirname, 'dist', file.minified.substring(1)); // 去掉开头的/
  const hash = getFileHash(filePath);
  const hashedFilename = file.minified.replace('.min.', `.min.${hash}.`);

  optimizedIndex = optimizedIndex
    .replace(file.original, hashedFilename)
    .replace(file.minified, hashedFilename);

  console.log(`已为 ${file.minified} 添加哈希值: ${hashedFilename}`);
});

// 确保正确引用Workbox生成的Service Worker
// 注意：Workbox会自动在构建过程中处理Service Worker的注册

// 保存优化后的index.html
fs.writeFileSync(path.join(__dirname, 'dist/index.html'), optimizedIndex, 'utf8');
console.log('已生成优化版本的index.html，引用压缩后的文件');
